﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using TumbaloSoft.Helpers;
using TumbaloSoft.Models;

namespace TumbaloSoft.Controllers
{
    public class TumbaloController : Controller
    {
        protected ActionResult defaultAction;
       
        protected override void ExecuteCore()
        {
            //inicio del bloque login
            if (!AccountController.validarLogueo(HttpContext))
            {
                defaultAction = RedirectToAction("LogOn", "Account", new { returnUrl = HttpContext.Request.Path });
                try
                {
                    base.ExecuteCore();
                }
                catch(Exception ex) {
                    defaultAction = View("~/Views/Shared/Error.cshtml");
                    Logger.Current.Error("error raro", ex);
                }
                return;
            }

            if (!AccountController.validarPermiso(HttpContext))
            {
                defaultAction = View("~/Views/Shared/AccesoRestringido.cshtml");

                try
                {
                    base.ExecuteCore();
                }
                catch(Exception ex) {
                    defaultAction = View("~/Views/Shared/Error.cshtml");
                    Logger.Current.Error("error raro", ex);
                }
                return;
            }
            ViewBag.permiso = AccountController.getIdPerfil(HttpContext);
            PersonaNatural personaN;
            try
            {
                personaN = HelperPersonaNatural.selectById(AccountController.getIdPersona(HttpContext));
                ViewBag.nombrePersona = personaN.prNombre + " " + personaN.prApellidoPaterno + " " ;
			 AdministradorEdificios Administrador = HelperAdministrador.selectByIdPersona(AccountController.getIdPersona(HttpContext));
			 
			 if (AccountController.getIdPerfil(HttpContext) == 2)
			 {
				 int idEdificio = HelperAdministrador.buscaEdificioAdministrado(Administrador.prIdAdministrador);
				 Edificio edificio = HelperEdificio.selectById(idEdificio);
                 if (edificio == null)
                 {
                     ViewBag.mensaje = "Esta registrado pero aun no tiene asignado un edificio, comuniquese con el Administrador del Sistema";
                     ViewBag.returnURL = "/Home";
                     defaultAction = View("~/Views/Shared/Exito.cshtml");

                 }
                 else
                 {
                     ViewBag.idEdificio = edificio.prIdEdificio;
                     ViewBag.nombreEdificio = edificio.prNombre;
                     ViewBag.logoedificio = HelperEdificio.selectLogo(Administrador.prIdAdministrador);
                 }
             }
			 if (AccountController.getIdPerfil(HttpContext) == 1)
			 {
				ViewBag.logoedificio=HelperEdificio.selectLogoPropietario(AccountController.getIdPersona(HttpContext));
                ViewBag.listaEdif = HelperPropietario.selectListaEdificios(AccountController.getIdPersona(HttpContext));
			 }
                
			 
            }
            catch
            {
                defaultAction = View("~/Views/Shared/Error.cshtml");
            }
            ViewBag.permiso = AccountController.getIdPerfil(HttpContext);
            //fin del bloque login
            try
            {
                base.ExecuteCore();
            }
            catch(Exception ex) {
                defaultAction = View("~/Views/Shared/Error.cshtml");
                Logger.Current.Error("error raro",ex);
            }
        }
    }
}
